(function(window){
	var u = {};
	
	/**
     * table交互声明
     * @type {{}}
     */
    var vues = {};//map
	
	/**
     * 设置Table
     * @param url 请求URL
     * @param id TableId 用_Table声明
     * @param func 控制函数方法
     * @param isCheck 是否开启Icheck或者Iradio
     * @param isInit 是否初始化
     * @param isPage 是否分页
     * @param column 显示展开箭头列 从0开始
     * @param add 拓展参数
     */
    u.addTable = function (url, id, func, isCheck, isInit, isPage, column, add, isLoading, loadingId) {
    	//遮罩层
		if(isLoading){
			$(loadingId).mLoading("show");
		}
    	var elSel = "div[_table=" + id.substr(1) + "]";
        var oldUrl = url;
        var el = $(elSel).get(0);
        console.log(el);
        if (column == undefined || column == null) {
            column = 0;
        }
        
        var data = {
        	isFirstPage: true,
        	isLastPage: true,
	        page: null,
	        pages: 1,
	        pageIndex:1,
	        pageSize:10,
	        total:0,
	        con:null
	    };
        
        if (add != undefined) {
            for (var i = 0; i < add.length; i++) {
                data[add[i]] = '';
            }
        }
        var vue = new Vue({
            el: el,
            data: data,
            methods: {
            	/**
                 * 设置数据
                 * @param obj
                 */
                setPage: function (obj) {
                    this.page = obj;
                },
                /**
                 * 设置查询条件
                 * @param obj
                 */
                setCon: function (obj) {
                	this.con = obj;
                	this.setPageIndex(1);
                    loadData();
                },
                /**
                 * 设置是否是首页
                 * @param obj
                 */
                setIsFirstPage: function (obj) {
                	this.isFirstPage = obj;
                },
                /**
                 * 设置是否是末尾
                 * @param obj
                 */
                setIsLastPage: function (obj) {
                	this.isLastPage = obj;
                },
                /**
                 * 设置总页面数
                 * @param obj
                 */
                setPages: function (obj) {
                	this.pages = obj;
                },
                /**
                 * 设置页面数量
                 * @param obj
                 */
                setPageSize: function (e) {
                	var el = e.target;
                	this.pageSize = $(el).val();
                	this.pageIndex = 1;
                	loadData();
                },
                /**
                 * 设置页面
                 * @param obj
                 */
                setPageIndex: function (obj) {
                	this.pageIndex = obj;
                },
                /**
                 * 设置数据总量
                 * @param obj
                 */
                setTotal: function (obj) {
                	this.total = obj;
                },
                /**
                 * 还原初始Url
                 */
                resetUrl: function () {
                    this.setPageIndex(1);
                    this.pageSize = 10;
                    loadData();
                },
                /**
                 * 
                 * @pageIndex
                 */
                selectPage: function (pageIndex) {
                	this.setPageIndex(pageIndex);
                	loadData();
                },
                /**
                 * 重置查询条件
                 */
                resetCon: function () {
                    this.con = null;
                },
                /**
                 * 刷新
                 */
                refreh: function(){
                	this.resetCon();
                	this.resetUrl();
                },
                /**
                 * 去首页
                 */
                toFirst: function() {
                	this.setPageIndex(1);
                	loadData();
                },
                /**
                 * 去最后一页
                 */
                toLast: function () {
                	this.setPageIndex(this.pages);
                	loadData();
                },
                /**
                 * 向后翻页
                 */
                backward: function () {
                	this.setPageIndex((this.pageIndex-1));
                	loadData();
                },
                /**
                 * 向前翻页
                 */
                forward: function () {
                	this.setPageIndex((this.pageIndex+1));
                	loadData();
                },
            	/**
            	 * 设置方法
            	 */
            	custom: func
            }
        });
        
        vues[id] = vue;//table传递
        
        /**
         * 加载数据
         * @param pageIndex
         * @param pageSize
         */
        function loadData() {
        	var nerUrl;
    		if (url.indexOf('?') != -1) {
    			nerUrl = url + '&page_index=' + vue.pageIndex + '&page_size=' + vue.pageSize;
    		} else {
    			nerUrl = url + '?page_index=' + vue.pageIndex + '&page_size=' + vue.pageSize;
    		}
            
            if(vue.con){
            	nerUrl += vue.con;
            }
            
            if (url) {
            	$byking.getJSONWithToken(nerUrl, function (data) {
            		if(isPage==true){
            			vue.setIsFirstPage(data.data.isFirstPage);
                		vue.setIsLastPage(data.data.isLastPage);
                		vue.setPages(data.data.pages);
                        vue.setPage(data.data.list);
                        vue.setPageIndex(data.data.pageNum);
                        vue.setTotal(data.data.total);
            		} else {
            			vue.setPage(data.data);
            			if(data.data==null){
            				vue.setTotal(0);
            			} else {
            				vue.setTotal(data.data.length);
            			}
            		}
            		 if(isLoading){
                     	$(loadingId).mLoading("hide");
                     }
                },function(data){
                	layer.msg(data.responseJSON.message, {icon:5});
                	if(data.responseJSON.code == "9001"){
                		window.location.href = $hostconfig.rootpath+"/page/login.html";
                	}
                });
            }
        	
        }
        
        if (!isInit) {
        	return;
        }
        
        loadData();
    };
    
    /**
     * 获取某个Vue，用于页面交互
     * @param id tableId
     * @returns {*}
     */
    u.getVue = function (id) {
        return vues[id];
    };
    
    /**
     * setVue
     * @param id
     * @param vue
     */
    u.setVue = function (id, vue) {
        vues[id] = vue;
    };
    
	window.$tableData = u;
})(window)